package cn.flying.cloud.system.user.service;

import java.io.Serializable;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;

import cn.flying.cloud.base.common.bo.UserInfo;
import cn.flying.cloud.base.common.vo.PageRequest;
import cn.flying.cloud.base.common.vo.PageResponse;
import cn.flying.cloud.system.user.entity.SysUserInfo;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author admin
 * @since 2024-04-02 13:08:33
 */
public interface SysUserInfoService extends IService<SysUserInfo> {

    /**
     * 分页查询用户信息表数据
     *
     * @param request
     * @return
     */
    PageResponse getPageList(PageRequest<SysUserInfo> request);

    /**
     * 列表查询用户信息表数据
     *
     * @param sysUserInfo
     * @return
     */
    List<SysUserInfo> getList(SysUserInfo sysUserInfo);

    /**
     * 获取所有的用户信息表数据
     *
     * @return
     */
    List<SysUserInfo> getAllUserList();

    /**
     * 查询用户信息表详情数据
     *
     * @param sysUserInfo
     * @return
     */
    SysUserInfo getOneObj(SysUserInfo sysUserInfo);

    /**
     * 新增用户信息表数据
     *
     * @param sysUserInfo
     * @return
     */
    boolean createObj(SysUserInfo sysUserInfo);

    /**
     * 更新用户信息表数据
     *
     * @param sysUserInfo
     * @return
     */
    boolean updateObj(SysUserInfo sysUserInfo);

    /**
     * 删除用户信息表数据
     *
     * @param sysUserInfo
     * @return
     */
    boolean deleteObj(SysUserInfo sysUserInfo);

    /**
     * 根据Id删除
     *
     * @param id
     * @return
     */
    boolean deleteById(Serializable id);

    /**
     * 重置用户密码
     *
     * @param sysUserInfo
     */
    boolean reset(SysUserInfo sysUserInfo);

    /**
     * 查询用户认证信息
     *
     * @param username
     * @param type
     * @return
     */
    UserInfo getUserAuthInfo(String username, String type);

    /**
     * 同步注册用户信息
     *
     * @param authInfo
     */
    String register(UserInfo authInfo);

    void updateUserPwd(String oldPassword, String newPassword);
}
